Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Інститут комп’ютерних технологій, автоматики та метрології
Кафедра СКС
КУРСОВИЙ ПРОЕКТ
з дисципліни: “Системне програмне забезпечення”
на тему:
“Розробка та реалізація компонент
системного програмного забезпечення”
Варіант № 2
Львів – 2023
Завдання на курсовий проект
Розробити транслятор заданої вхідної мови програмування, до якої висуваються наступні базові вимоги :
Кожна програма починається зі слова start і закінчується словом stop. Все що до start і після stop не аналізується. Наприклад як у мові Паскаль begin end.
Програма має надавати можливість працювати зі змінними. Змінні перед використанням мають бути попередньо оголошені за наступним форматом: “тип даних” “змінна1”, “змінна2”; Наприклад int x,y;
Присвоєння до змінних виконується оператором присвоєння :=. Наприклад x:=y+5;
Програма має надавати можливість працювати з константами. Константи ініціюються наступним чином: “константа” = “число;”. Наприклад а=3;
Ввід даних зі стандартного вводу відбувається оператором in(), а вивід оператором out(). Наприклад in(x); out(y).
Програма має працювати з типом даних boolean, int.
Програма має виконувати операції ,&,~,>=
Програма має надавати можливість використовувати оператор repeat (Pascal)
Вихідною мовою трансляції є мова С.
Математичний вираз має бути розібраний в залежності від пріоритету виконання та розписаний викликом власних С функцій.
Цільова мова компілятора: ANSI C. Для отримання виконавчого файлу на виході розробленого компілятора скористатися програмою bcc.exe. Мова розробки компілятора: ANSI C. Реалізувати інтерфейс командного рядка. На вхід розробленого компілятора має подаватися текстовий файл, написаний на заданій мові програмування. На виході розробленого компілятора мають з’являтися чотири файли: файл з повідомленнями про помилки (або про їх відсутність), файл на мові СІ, об’єктний та виконавчий файли.
Назва вхідної мови програмування утворюється від першої букви у прізвищі студента та номеру його варіанту. Саме таке розширення повинні мати текстові файли, написані на цій мові програмування. Назва мови програмування, для якої розробляється компілятор у даному курсовому проекті – S8.
Варіант завдання
Варіант
1
2
3
4
5
6
7
8
2
start
stop.
x, y, z
a, b, c
input
output
byte(1u)
(*,/),(+,-)
u- беззнакове, s - знакове
ВСТУП
Компілятор – це програма, яка читає текст програми, написаної на одній мові – початковій, і транслює (переводить) його в еквівалентний текст на іншій мові – цільовій. Одним з важливих моментів трансляції є повідомлення користувача про наявність помилок в початковій програмі.
Створення компіляторів є одною з невід‘ємних частин системного програмного забезпечення. Одним із завдань компілятора є переведення написаного тексту програми у машинний код, який повинен відповідати комп‘ютерній системі. Оскільки сьогоднішній час – час великого розвитку комп‘ютерної галузі, то створений машинний код з часом стає застарілим, тобто не відповідає принципу оптимального використання комп‘ютерних ресурсів. Тому для запобігання цього явища необхідно створювати нові компілятори, які б відповідали потребам теперішнього часу.
Проблема компіляції полягає в пошуку відповідності тексту вхідної програми конструкціям, що визначені граматикою. Граматика визначає форму або синтаксис допустимих виразів мови. Тому текст вхідної мови зручно подавати у вигляді послідовності лексем, що є неподільними одиницями мови. За допомогою компілятора програміст повинен мати можливість редагувати текст вхідної мови. Для цього компілятор має виявляти всі невідповідності тексту програми конструкціям мови і у випадку відсутності помилок генерувати об'єктний код або виконавчий модуль.
На перший погляд, різноманітність компіляторів приголомшує. Використовуються тисячі початкових мов, від традиційних, таких як Fortran і Pascal, до спеціалізованих, виникаючих у всіх областях комп'ютерних технологій. Цільові мови не менше...